using System;
using Microsoft.Pex.Framework;
using Dsa.DataStructures;

namespace Dsa.DataStructures
{
    /// <summary>A factory for Dsa.DataStructures.DoublyLinkedList`1[System.Int32] instances</summary>
    public static partial class DoublyLinkedListFactory
    {
        /// <summary>A factory for Dsa.DataStructures.DoublyLinkedList`1[System.Int32] instances</summary>
        [PexFactoryMethod(typeof(DoublyLinkedList<int>))]
        public static DoublyLinkedList<int> Create(
            DoublyLinkedListNode<int> node_doublyLinkedListNode,
            int value_i,
            int value_i1
        )
        {
            PexAssume.IsNotNull(node_doublyLinkedListNode);
            DoublyLinkedList<int> doublyLinkedList = new DoublyLinkedList<int>();
            doublyLinkedList.AddFirst(node_doublyLinkedListNode.Value);
            node_doublyLinkedListNode = doublyLinkedList.Head;
            doublyLinkedList.AddBefore(node_doublyLinkedListNode, value_i);
            doublyLinkedList.AddFirst(value_i1);
            
            return doublyLinkedList;

            // TODO: Edit factory method of DoublyLinkedList`1<Int32>
            // This method should be able to configure the object in all possible ways.
            // Add as many parameters as needed,
            // and assign their values to each field by using the API.
        }
    }
}
